SVM(support vector machine)支撐向量機,這個模型是在神經網路之前效果最好的模型。除了有利用到kernel function,更有漂亮的數學解,也因此可解釋性比神經網路好很多。
SVM提出了Margin這個想法,他去找Margin最大的分類邊界來分類,這樣的作法會讓分類結果更加的強健(robust),最大的margin其實可以反映到以前提過的regularization的意義。所以什麼是margin呢?margin就是離分類邊界最近的點,那一個點與分類邊緣的距離。也就是下面這個圖片所示(圖片出自:PRML - p327)
今天跟大家介紹要怎麼計算這個margin。我們先定義分類邊界這個超平面(hyperplane)
y = 0 所構成的超平面就是我們的分類邊界,也就是資料帶入這個式子之中,是正是負都對應到一個類別,所以剛好就是二元分類。
所以我們要計算的就是某一個資料向量,到這個超平面的距離。首先我們先知道,這個超平面的法向量,就會是 w ,而向量到超平面的距離,就會是向量投影到法向量之後的長度,減去超平面上隨便一個向量投影到法向量上的長度。也就是可以寫成
x是資料向量,x'是平面上隨便一個向量。
簡單的利用投影公式可以算出來
不過我們不喜歡絕對值,所以把他改寫成
知道距離之後,我們就知道margin會是
min 的 n 也就是找那些離邊界最近的點,而這個式子的輸出就是我們的margin,而這幾天要跟大家介紹的SVM就是從這個式子開始做推導,先導出簡單針對線性可分資料的hard margin SVM,再推廣到soft margin SVM,甚至用來做regression。
至於二元分類的SVM要怎麼推廣到多元分類?都是利用很多個分類邊界組成,不過主要還是分有兩種方式
所以明天開始的介紹會以二元分類來跟大家介紹,而實做的時候會做三個類別的分類給大家參考。